From 9caf0b5030c3529acf8cb0226e58783c27394d6d Mon Sep 17 00:00:00 2001 From: Andrew Garrett Date: Tue, 3 Mar 2009 02:56:30 +0000 Subject: [PATCH] (bug 11857) Add 'protect' option to importImages.php maintenance script. Includes related Article changes -- fixing an E_NOTICE and reporting errors in the debug log. --- includes/Article.php | 16 +++++++++++++- maintenance/importImages.php | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/includes/Article.php b/includes/Article.php index f236de5a91..3f079a9f14 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -1943,7 +1943,18 @@ class Article { global $wgUser, $wgRestrictionTypes, $wgContLang; $id = $this->mTitle->getArticleID(); - if( $id <= 0 || wfReadOnly() || !$this->mTitle->userCan('protect') ) { + if ( $id <= 0 ) { + wfDebug( "updateRestrictions failed: $id <= 0\n" ); + return false; + } + + if ( wfReadOnly() ) { + wfDebug( "updateRestrictions failed: read-only\n" ); + return false; + } + + if ( wfReadOnly() ) { + wfDebug( "updateRestrictions failed: insufficient permissions\n" ); return false; } @@ -2014,6 +2025,9 @@ class Article { $encodedExpiry = array(); $protect_description = ''; foreach( $limit as $action => $restrictions ) { + if ( !isset($expiry[$action]) ) + $expiry[$action] = 'infinite'; + $encodedExpiry[$action] = Block::encodeExpiry($expiry[$action], $dbw ); if( $restrictions != '' ) { $protect_description .= "[$action=$restrictions] ("; diff --git a/maintenance/importImages.php b/maintenance/importImages.php index 4c6082b214..7997b0d570 100644 --- a/maintenance/importImages.php +++ b/maintenance/importImages.php @@ -21,6 +21,13 @@ if( count( $args ) > 0 ) { $dir = $args[0]; + # Check Protection + if (isset($options['protect']) && isset($options['unprotect'])) + die("Cannot specify both protect and unprotect. Only 1 is allowed.\n"); + + if ($options['protect'] == 1) + die("You must specify a protection option.\n"); + # Prepare the list of allowed extensions global $wgFileExtensions; $extensions = isset( $options['extensions'] ) @@ -114,6 +121,25 @@ if( count( $args ) > 0 ) { continue; } } + + $doProtect = false; + $restrictions = array(); + + global $wgRestrictionLevels; + + $protectLevel = isset($options['protect']) ? $options['protect'] : null; + + if ( $protectLevel && in_array( $protectLevel, $wgRestrictionLevels ) ) { + $restrictions['move'] = $protectLevel; + $restrictions['edit'] = $protectLevel; + $doProtect = true; + } + if (isset($options['unprotect'])) { + $restrictions['move'] = ''; + $restrictions['edit'] = ''; + $doProtect = true; + } + $$svar++; if ( isset( $options['dry'] ) ) { @@ -121,6 +147,21 @@ if( count( $args ) > 0 ) { } else if ( $image->recordUpload( $archive->value, $commentText, $license ) ) { # We're done! echo( "done.\n" ); + if ($doProtect) { + # Protect the file + $article = new Article( $title ); + echo "\nWaiting for slaves...\n"; + // Wait for slaves. + sleep(2.0); + wfWaitForSlaves( 1.0 ); + + echo( "\nSetting image restrictions ... " ); + if ( $article->updateRestrictions($restrictions) ) + echo( "done.\n" ); + else + echo( "failed.\n" ); + } + } else { echo( "failed.\n" ); } @@ -166,6 +207,8 @@ Options: but the extension . --license= Use an optional license template --dry Dry run, don't import anything +--protect= Specify the protect value (autoconfirmed,sysop) +--unprotect Unprotects all uploaded images END; exit(); -- 2.20.1